/**
 * 版权所有 2009-2015 中国中医科学院中医药信息研究所 何前锋 frontpeak@yahoo.com.cn
 **/
package cn.ac.cintcm.sh.domain;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class AvgDosage {
    
    private Dosage min;
    private Dosage max;
    private Unit avg;
    List<Dosage> dosages = new ArrayList<Dosage>();
    
    public Unit getAvg() {
        return avg;
    }

    public List<Dosage> getDosages() {
        return dosages;
    }
    
    public Dosage getMax() {
        return max;
    }

    public Dosage getMin() {
        return min;
    }

    public void calculate() {
        Dosage[] array = dosages.toArray(new Dosage[dosages.size()]);
        if (array.length > 0) {
            Arrays.sort(array);
            max = array[0];
            min = array[array.length - 1];
            float value = 0;
            //todo: 单位不同的剂量之间的换算，如有的用两表示，有的用铢表示，
            //两和铢之间具有一定得换算关系。要么在数据库里统一换算，要么具有统一规则在程序中处理
            for (Dosage d : array) {
                value = value + d.getUnit().getQuantity();
            }
            value = value / array.length;
            avg = new Unit();
            avg.setQuantity(value);
            avg.setUnit(array[0].getUnit().getUnit());
        }
    }
    
    public void add(Dosage d) {
        dosages.add(d);
    }
}